package com.dl.exam.service;

import com.alibaba.fastjson.JSONObject;
import com.dl.exam.entity.Exam;
import com.dl.exam.entity.Page;
import com.dl.exam.entity.question.Question;

import java.util.List;

/**
 * @author DL
 * @create 2022-01-30 18:38
 */
public interface ExamService {


    /**
     * 开始考试时，添加本次考试的信息
     * @param examId 本次考试的id
     * @param userId 用户id
     * @param examType 考试类型
     * @return 结果
     */
    boolean startExam(String examId, String userId, Integer examType, List<String> questionIdList);

    /**
     * 提交考试
     * @return 结果
     */
    boolean submitExam(JSONObject jsonObject);


    /**
     * 交卷时更新考试管理表的信息
     * @param userId 用户id
     * @param score 分数
     * @param totalScore 总分
     * @return 受影响的行数
     */
    boolean updateExamManage(String userId, float score, float totalScore);

    /**
     * 交卷时更新考试信息中的试题答案
     * @param examId 考试id
     * @param params 可变长string参数，question_id,answer
     * @return 受影响的行数
     */
    boolean updateExamAnswer(String examId, List<String> params);

    /**
     * 根据 用户id 查询未完成的考试
     * @param userId 用户id
     * @return 试题信息
     */
    Exam getUnfinishedExam(String userId);


    /**
     * 查询已完成的考试信息和答案
     * @param examId 考试id
     * @param examType 考试类型
     * @return 考试信息和答案
     */
    Page<Question> getFinishedExam(String examId, int examType, int currentPage, int pageSize);

    /**
     * 根据 用户id 查询所有历史考试
     * @param userId 用户id
     * @param currentPage 当前页面
     * @param pageSize 页面大小
     * @return 考试信息，带分页
     */
    Page<Exam> getAllExam(String userId, int currentPage, int pageSize);





}
